# -*-coding utf-8 -*-

__project__ = 'le-bo16'
__file_name__ = 'homework7'
__author__ = 'hqDu'
__time__ = '2020-11-11 22:32'
__product_name = 'PyCharm'
# @fileName :homework7.py

import random

# 4.python中python2.X python3.X默认编码格式：
# python2.X ascii
# python3.X utf-8
# 1）大环境不同
# python2.x：源码重复，不规范
# python3.x：源码整合，更加清晰优美
# 2）默认编码方式不同
# python2.x：默认ASCII码
# python3.x：默认UTF-8编码
# 3）python3.x没有长整型
# python2.x：有长整型long
# python3.x：long整数类型被废弃，统一为int
# 4）打印方式不同
# python2.x：print语句，print 空格+打印内容
# python3.x：print()，print(打印内容)
# 5）交互函数不同
# python2.x：raw_input() input()
# i) raw_input()函数的输入内容类型为字符串
# ii) input()函数的输入内容类型为输入字符的类型
# python3.x
# i) raw_input()被废除，统一使用input()
# ii) input()函数的输入内容为字符串类型




# 5.将"hello_new_world"按"_"进行切割
# str1 = "hello_new_world"
# res = str1.split('_')
# res = str1.split('_', 2)
# print(res)

# 6.将数字1以"0001"格式输出到屏幕
# # 方法1：
# a1 = 1
# a2 = "%04d" % a1
# print(a2)
#
# # 方法2：返回一个原字符串右对齐，并使用0填充至长度width的新字符串
# b = '1'
# c = b.rjust(4,'0')
# print(c)
#
# # 方法3
# d = '1'
# print(d.zfill(4))


# 1.字典a={1: 1},是否正确？
# 正确

# 2.请合并列表a=[1,2,3,4]和b=[5,6,7,8]
# a = [1, 2, 3, 4]
# b = [5, 6, 7, 8]
# res = a + b
# print(res)
# append()/extend()/insert()

# 3.列表a，请写出实现正序排序，倒序排序，逆序排序的内置方法
# a = [1, 2, 3, 4]
# a.sort()
# print(a)
# a.sort(reverse = True)
# print(a)
# b = a[::-1]  # 反转或逆序
# a.reverse()
# print(b)

# 4.字典d={"k":1,"v":2}，请写出d.items()结果
# dict_items([('k',1),('v',2)])

# 5.复杂列表[{"k":1,"v":2},{"k":12,"v":22},{"k":13,"v":23}]，请用内置方法写出按key倒序排列的方法
# 逆序排列
# my_list = [{"k":1,"v":2},{"k":12,"v":22},{"k":13,"v":23}]
# my_list1 = my_list[::-1]
# print(my_list1)

# list  sort(self,key,reverse)
# 列表内为元组或字典的情况，需要sort的参数key，也就是需要设置关键词参数

# my_list = [1, 'dasd', 2, 'sds']
# 普通的列表，不涉及元组和字典
# my_list.sort()

# my_list = [(1,3),(2,4),(5,6),(7,8)]
# 对于列表内出现元组，key = lambda x:x[0]，这里x表示列表内的元组，x[0]表示取元组的第一个值
# 表示按照元组内的第一个元素进行排序

# my_list = [{"k":1,"v":2},{"k":12,"v":22},{"k":13,"v":23}]
# 对于列表内出现字典的，key = lambda x:x['k']，这里x表示列表内的字典
# x['k']表示列表按照字典的‘k’进行排序


# # 按照k，从小到大排列
# my_list = [{"k":1,"v":2},{"k":12,"v":22},{"k":13,"v":23}]
# my_list.sort(key=lambda x:x['k'])
# print(my_list)
# # 按照k，从大到小排序
# my_list.sort(key=lambda x:x['k'], reverse=True)
# print(my_list)
# 按照v，从大到小排序
# my_list.sort(key=lambda x:x['v'], reverse=True)
# print(my_list)
# # 按照v，从小到大排序
# my_list.sort(key=lambda x:x['v'])
# print(my_list)

# 6.集合s=set([1,2,3,4]),d=set([2,4,9,0,3]),请用内置方法写出并集、交集、对称差
# s = set([1, 2, 3, 4])
# d = set([2, 4, 9, 0, 3])
# intersection = s & d  # 交集
# union = s | d  # 并集
# symmetric = s.symmetric_difference(d)  # 对称差，等同于 symmetric = s ^ d
# print(symmetric)

# 7、把列表a=['a','b']里各项，转为字符串并用逗号","连接
# a=['a', 'b']
# str1 = ','.join(a)
# print(str1)

# 8.随机输出大于0，小于1的数；随机输出一个100以内的整形数
# 9.长度未知元组a=(1,3,4,5,6,......)，随机输出n个项
# 10.代码a=[{i,j} for i,j in enumerate(xrange(5))],写出a的最终结果
# 11.分别说cmp,map,filter作用

# 1.判断正确与否，若有误指出并改正
# 1）字典：具有映射关系，无序，字典的键不能重复并且可以是任意数据类型
# 错误，字典的键只能是不可变数据类型：int/string/bool/元组
# 2）元组：不能修改，无序，不能索引切片，当元组中只有一个元素时，需要在元素后面加逗号
# 错，元组是有序的，可以利用其下标索引，可以索引切片。
# my_tuple = (1, 2, 3, 4, 5)
# print(my_tuple[::-1])
# 3）列表：元素可以重复，有序，不可以反向索引，元素是任意类型
# 错误：可以反向索引
# 4）集合：元素不可以重复，可以索引，a={}声明一个空集合
# 错。集合是无序的，不能索引。集合中元素只能是不可变数据类型。a={}不能声明一个空集合。
# a = set()

# 2.一行代码实现1到100的和
# sum可迭代对象：列表、元组、集合、字典
# sum()最后求得的值 = 可迭代对象里面的数加起来的总和(字典:key值相加) + start的值(如果没写start的值，则默认为0)

# print(sum(i for i in range(101)))
# print(sum(range(101)))
# print(sum(range(1，101)))

# 3.按照下面要求写出完整代码：
# 使用random.random方法实现随机输出范围在[25,60）中的浮点数
# random.random用于生成0<= n < 1.0之间的浮点数
# 方法1：
# num = 25 + 35 * random.random()
# print(num)

# 方法2：
# 同时缩小再同时放大，先都除以100再乘以100
my_num = random.random()
if (my_num >= 0.25) and (my_num < 0.6):
    print(my_num * 100)

# 方法3：
# random.randint(25,60) + random.random()


# 2.一个list对象a=[1,2,4,3,2,2,4]，去重
# a=[1,2,4,3,2,2,4]
# res = list(set(a))
# print(res)